# 1）定义一个lambda函数，实现功能：参数为x,判断该参数是奇数还是偶数，是奇数返回False,是偶数返回True
#定义计算lambda函数
a= lambda x: True if x%2==0 else False
#调用lambda函数并打印结果
print(a(-1))
# 使用高阶函数实现以下功能
# 2） list1 = [5,23,1,5,7,98,6,7]将列表中的所有数值,都该成它的平方+10
list1 = [5,23,1,5,7,98,6,7]
#使用lambda表达式和map结合
b=list(map(lambda i:i*i+10,list1))
#调用函数并打印结果
print(b)
# 3）lst = ["tom","lily",'张三',"lucy","阿斯蒂芬","sdafa"]将名字中姓张的排除掉
lst = ["tom","lily",'张三',"lucy","阿斯蒂芬","sdafa"]
#使用lambda表达式和filter结合,startswith判断以某字符开头
c=list(filter(lambda  x: not x.startswith("张"),lst))
print(c)
# 4）lst = ["tom","lily",'jack',"lucy","sdfen","sdafa"]根据第二个字母开始到后面的字母，进行自然顺序排序
lst1 = ["tom","lily",'jack',"lucy","sdfen","sdafa"]
#使用lambda表达式和sorted结合,通过下标为1时开始
d=sorted(lst1,key=lambda x: x[1::])
print(d)
# 5）总结:什么是装饰器？你用过哪些装饰器（自定义的装饰器，python定义好的装饰器）使用过哪些python的内置函数,都能实现哪些功能

# 6）定义一个装饰器，实现功能：判断一个函数的用户名参数是不是admin,是的话执行函数，不是的话，打印告知没有权限执行该方法
def check(f):
    def check_user(*args,**kwargs):
        print(f"--------{f.__name__}开始执行了,参数为：{args},{kwargs}-------")
        username = args[0] if args else None


        if username == 'admin':
            r = f(*args, **kwargs)
            print(f"--------{f.__name__}执行结束了，返回结果为{r}-------")
            return r
        else:
            print(f"--------{f.__name__}没有权限执行该方法-------")
    return check_user
@check
def sum(username,n,m):
    total= 0
    for i in range(n,m):
        total += i
    return total
sum('admin',1,5)
sum('user', 1, 5)

# 1） 编写一个装饰器，将函数返回值转换为字符串
def log(f):
    def log_method(*a,**k):
        print(f"--------{f.__num__}开始执行了,参数为：{a},{k}-------")
        r = f(*a,**k)
        return(str(r))
    return log_method
# 2）使用filter()筛选出列表[12,17,24,19,16]中的偶数
listm=[12,17,24,19,16]
#使用lambda表达式和filter结合
m=list(filter(lambda  x: x%2 ==0,listm))
print(m)
# 3）思考三层装饰器怎么写



